package com.zmh.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import com.zmh.common.DateUtil;
import com.zmh.common.OperationUtil;
import com.zmh.model.book.UpdWebsit;

/**
 * 更新站点管理
 * @author zhoumh
 * @version 创建时间：2017年11月24日 下午3:45:24 
 * @Description
 */
@Repository
public class UpdWebsitDao {
	 /**
	  * 日志记录  
	  */
   private static final Logger LOGGER = LoggerFactory.getLogger(UpdWebsitDao.class);
	@Autowired
	private JdbcTemplate jdbcTemplate;
	/**
	 * 查询全部站点信息
	 * @return: List<UpdWebsit>
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:53:35 
	 * @Description:
	 */
	public List<UpdWebsit> selWebsitByAll(){
		String sqlstr = "SELECT id, uuid, bid, name, url, catalogurl, sort, type, state, createtime, updatetime, description FROM updwebsit";
		List<UpdWebsit> updWebsits = new ArrayList<>();
		try {
			updWebsits = jdbcTemplate.query(sqlstr,
					new RowMapper<UpdWebsit>(){
					@Override
					public UpdWebsit mapRow(ResultSet rs, int rowNum) throws SQLException {
						return objSet(rs, rowNum);
					}
					});
		} catch (EmptyResultDataAccessException e) {
			e.printStackTrace();
		}
		return updWebsits;
	}
	/**
	 * 根据UUID查询站点信息
	 * @param uuid
	 * @return: UpdWebsit
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:53:46 
	 * @Description:
	 */
	public UpdWebsit selWebsitByUuid(String uuid){
		String sqlstr = "SELECT id, uuid, bid, name, url, catalogurl, sort, type, state, createtime, updatetime, description FROM updwebsit WHERE uuid=?";
		UpdWebsit updWebsit = new UpdWebsit();
		Object[] param = new Object[]{uuid};
		try {
			updWebsit = jdbcTemplate.queryForObject(sqlstr, param, new RowMapper<UpdWebsit>(){
					@Override
					public UpdWebsit mapRow(ResultSet rs, int rowNum) throws SQLException {
						return objSet(rs, rowNum);
					}
					});
		} catch (EmptyResultDataAccessException e) {
			//空返回值异常不做处理
			e.printStackTrace();
		}
		return updWebsit;
	}
	/**
	 * 根据书籍ID查询站点信息
	 * @param bid
	 * @return: List<UpdWebsit>
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:54:01 
	 * @Description:
	 */
	public List<UpdWebsit> selWebsitByBid(String bid){
		String sqlstr = "SELECT id, uuid, bid, name, url, catalogurl, sort, type, state, createtime, updatetime, description FROM updwebsit WHERE bid=?";
		Object[] param = new Object[]{bid};
		List<UpdWebsit> updWebsits = new ArrayList<>();
		try {
			updWebsits = jdbcTemplate.query(sqlstr,param,new RowMapper<UpdWebsit>(){
					@Override
					public UpdWebsit mapRow(ResultSet rs, int rowNum) throws SQLException {
						return objSet(rs, rowNum);
					}
					});
		} catch (EmptyResultDataAccessException e) {
			e.printStackTrace();
		}
		return updWebsits;
	}
	/**
	 * 根据数据状态查询总数
	 * @param state
	 * @return: int
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:54:23 
	 * @Description:
	 */
	public int sumByState(String state){
		String sqlstr = "SELECT count(id) FROM updwebsit WHERE state = ?";
		Object[] param = new Object[]{state};
		int count = jdbcTemplate.queryForObject(sqlstr,param,Integer.class);
		return count;
	}
	/**
	 * 添加站点信息
	 * @param updWebsit
	 * @return: int
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:54:30 
	 * @Description:
	 */
	public int insUpdwebsit(UpdWebsit updWebsit){
		String sqlstr = "insert into updwebsit (uuid, bid, name, url, catalogurl, description) values(?,?,?,?,?,?)";
		Object[] param = new Object[]{OperationUtil.getUUID(),updWebsit.getBid(),updWebsit.getName(),updWebsit.getUrl(),updWebsit.getCatalogurl(),updWebsit.getDescription()};
		int result = jdbcTemplate.update(sqlstr, param);
		return result;
		
	}
	/**
	 * 修改站点信息
	 * @param updWebsit
	 * @return: int
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:54:39 
	 * @Description:
	 */
	public int UpdwebsitByUuid(UpdWebsit updWebsit){
		String sqlstr = "update updwebsit set bid=?, name=?, url=?, catalogurl=?, state=?, updatetime=?, description=? where uuid=?";
		Object[] param = new Object[]{updWebsit.getBid(),updWebsit.getName(),updWebsit.getUrl(),updWebsit.getCatalogurl(),updWebsit.getState(),DateUtil.getDateTime(),updWebsit.getDescription(),updWebsit.getUuid()};
		int result = jdbcTemplate.update(sqlstr, param);
		return result;
	}
	/**
	 * 根据uuid删除站点信息
	 * @param uuid
	 * @return: int
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:54:47 
	 * @Description:
	 */
	public int delUpdwebsitByUuid(String uuid){
		String sqlstr = "delete from updwebsit where uuid = ?";
		Object[] param = new Object[]{uuid};
		int result = jdbcTemplate.update(sqlstr, param);
		return result;
	}
	/**
	 * 数据库查询结果映射
	 * @param rs
	 * @param rowNum
	 * @throws SQLException 
	 * @return: UpdWebsit
	 * @author: zhoumh
	 * @version: 创建时间：2017年11月24日 下午7:55:08 
	 * @Description:
	 */
	private UpdWebsit objSet(ResultSet rs, int rowNum) throws SQLException {
		UpdWebsit updWebsit = new UpdWebsit();
//		LOGGER.info(JSON.toJSONString(rs));
		updWebsit.setId(rs.getInt("id"));
		updWebsit.setUuid(rs.getString("uuid"));
		updWebsit.setBid(rs.getString("bid"));
		updWebsit.setName(rs.getString("name"));
		updWebsit.setUrl(rs.getString("url"));
		updWebsit.setCatalogurl(rs.getString("catalogurl"));
		updWebsit.setSort(rs.getInt("sort"));
		updWebsit.setType(rs.getString("type"));
		updWebsit.setState(rs.getString("state"));
		updWebsit.setCreateTime(rs.getString("createtime"));
		updWebsit.setUpdateTime(rs.getString("updatetime"));
		updWebsit.setDescription(rs.getString("description"));
		return updWebsit;
	}
}
